﻿// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证（版本 2.0）进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动！任何基于本项目二次开发而产生的一切法律纠纷和责任，我们不承担任何责任！

using System.ComponentModel.DataAnnotations;

namespace Admin.NET.Application;

/// <summary>
/// 延期范围枚举
/// </summary>
public enum DelayRangeEnum
{
    /// <summary>
    /// 轻微延期：1-3天
    /// </summary>
    Light = 1,
    
    /// <summary>
    /// 中等延期：4-7天
    /// </summary>
    Medium = 2,
    
    /// <summary>
    /// 严重延期：7天以上
    /// </summary>
    Severe = 3,
    /// <summary>
    /// 全部延期
    /// </summary>
    All = 4
}
/// <summary>
/// 全局筛选条件
/// </summary>
public class PlanDelayAllInput
{
    /// <summary>
    /// 月份
    /// </summary>
    public string workTime { get; set; }
    /// <summary>
    /// 分类
    /// </summary>
    public long? ClassName { get; set; }

    /// <summary>
    /// 区域
    /// </summary>
    public long? WorkAreaId { get; set; }
}

public class PlanDelayStartInput: PlanDelayAllInput
{ 
    public bool PlanStart { get; set; } = false;
}

public class PlanDelayCount: PlanDelayStartInput
{
    /// <summary>
    /// 延期范围类型
    /// </summary>
    public DelayRangeEnum DelayRange { get; set; } = DelayRangeEnum.Light;
    
    /// <summary>
    /// 延期天数阈值（保留作为备用参数）
    /// </summary>
    public int PlanCount { get; set; } = 3;
}

/// <summary>
/// 延期看板专用输入参数
/// </summary>
public class PlanDelayBoardInput : PlanDelayAllInput
{
    /// <summary>
    /// 最小延期天数（默认3天）
    /// </summary>
    public int MinDelayDays { get; set; } = 3;
}

